<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 什么是变量：可以改变的值
        // var a = 12;
        // a = 6;

        // 本质还是变量，只不过使用命名规范-标识让开发者知道，这个变量不可以修改。
        // var VERSION = "1.0"
        // let a = 12;

        // a = 5;

        // console.log(a);

        //const 常量不可以被修改
        // const a = 666;
        // a = 5;

        // Uncaught TypeError: Assignment to constant variable.
        // console.log(a);

        //1. 声明一定要赋初始值:一旦声明变量，就必须立即初始化，不能留到以后赋值
        // const a = 12;

        //2.值不允许修改
        // a = 666;
        // console.log(a); 

        // 3.也有块级作用域(和let相同)
        // {
        //     const a = 12;
        // }

        // console.log(a);

        
        // 4. 常量声明不会被提升(和let相同)

        // Uncaught ReferenceError: Cannot access 'a' before initialization
        // console.log(a); //报错 ： 未初始化 不能使用

        // const a = 123;

        // 5. const`不可重复声明(和let相同)
        // {
        //   const a= 123;
        //   const a= 456;
        // //   Uncaught SyntaxError: Identifier 'a' has already been declared
        // }

        // 6. 不再是顶层全局对象的属性（与let相同）
        // const a= 123;

        // console.log(window.a); //undefined

        //变量名和常量名同时使用一个名字(凡是被声明的变量或常量 都是不允许重复的)
        // let a = 12;
        // const a = 6;
        // //67 Uncaught SyntaxError: Identifier 'a' has already been declared
        // console.log(a);

        
        // {
        //     const a =12;

        // }

        // {
        //     let a = 6;
        // }

    </script>
</body>
</html>